#ifndef __TEST_GPIO_H
#define __TEST_GPIO_H


#include "xm32l003_gpio.h"
#include "xm32l003.h"
#include "xm32l003_conf.h"








uint8_t test_gpio_SetReset(GPIO_TypeDef* GPIOx,uint16_t GPI0_Pin);


uint8_t test_SetRset_GPIOModeOutPP(GPIO_TypeDef* GPIOx);
uint8_t test_SetRset_GPIOModeOutOD(GPIO_TypeDef* GPIOx);
uint8_t test_SetRset_GPIOModeAFOD(GPIO_TypeDef* GPIOx);
uint8_t test_SetRset_GPIOModeAFPP(GPIO_TypeDef* GPIOx);

uint8_t test_SetRset_GPIOModeOutPP_PU(GPIO_TypeDef* GPIOx);
uint8_t test_SetRset_GPIOModeOutPP_PD(GPIO_TypeDef* GPIOx);
uint8_t test_SetRset_GPIOModeOutOD_PU(GPIO_TypeDef* GPIOx);
uint8_t test_SetRset_GPIOModeOutOD_PD(GPIO_TypeDef* GPIOx);



uint8_t test_GPIOModeOutPP_WriteBit(GPIO_TypeDef* GPIOx);
uint8_t test_GPIOModeOutOD_WriteBit(GPIO_TypeDef* GPIOx);
uint8_t test_GPIOModeAFPP_WriteBit(GPIO_TypeDef* GPIOx);
uint8_t test_GPIOModeAFOD_WriteBit(GPIO_TypeDef* GPIOx);


uint8_t test_GPIOModeOutPP_Write(GPIO_TypeDef* GPIOx);
uint8_t test_GPIOModeOutOD_Write(GPIO_TypeDef* GPIOx);
uint8_t test_GPIOModeAFPP_Write(GPIO_TypeDef* GPIOx);
uint8_t test_GPIOModeAFOD_Write(GPIO_TypeDef* GPIOx);


int test_gpio_register_writebit(uint32_t *register_addr,uint32_t data);
void test_gpio_output_bit(GPIO_TypeDef* GPIOx,uint8_t outputtype,uint8_t pin);
void test_gpio_output_value(GPIO_TypeDef* GPIOx,uint8_t outputtype,uint8_t value);
void test_gpio_input_value(GPIO_TypeDef* GPIOx,uint8_t value);
GPIO_TypeDef* gpio_get_port(char *argv);











#endif
